<!DOCTYPE html> <html><!--
 Archive processed by SingleFile 
 url: https://mp.weixin.qq.com/s/NTVARhzMbTNeIY1faBx7tA 
 saved date: Thu Nov 21 2019 10:37:38 GMT+0800 (中国标准时间) 
--><meta charset=utf-8>
<meta http-equiv=X-UA-Compatible content="IE=edge">
<meta name=viewport content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0,viewport-fit=cover">
<meta name=apple-mobile-web-app-capable content=yes>
<meta name=apple-mobile-web-app-status-bar-style content=black>
<meta name=format-detection content="telephone=no">
<meta name=description content="一文清清楚楚解释什么是Spring MVC，通俗易懂！">
<meta name=author content=平凡希>
<meta property=og:title content=SpringMVC工作原理>
<meta property=og:url content="http://mp.weixin.qq.com/s?__biz=MzI3NjU2ODA5Mg==&amp;mid=2247484415&amp;idx=1&amp;sn=462d6a62b058a63d3db07948b9243e9c&amp;chksm=eb72c28cdc054b9a09d1a2a96e95b56de96e19b64740dd2f89272aa68efeb34c8ab5d89b9fed#rd">
<meta property=og:image content="http://mmbiz.qpic.cn/mmbiz_jpg/M7B64fHXISsMJ9fUorMxIGsNz7L1bMgtp42tx0ZZhGbMDfTkK67fzl5mnG3yFfQ04PxfH7KvqSJospVYq10hkw/0?wx_fmt=jpeg">
<meta property=og:description content="一文清清楚楚解释什么是Spring MVC，通俗易懂！">
<meta property=og:site_name content=微信公众平台>
<meta property=og:type content=article>
<meta property=og:article:author content=平凡希>
<meta property=twitter:card content=summary>
<meta property=twitter:image content="http://mmbiz.qpic.cn/mmbiz_jpg/M7B64fHXISsMJ9fUorMxIGsNz7L1bMgtp42tx0ZZhGbMDfTkK67fzl5mnG3yFfQ04PxfH7KvqSJospVYq10hkw/0?wx_fmt=jpeg">
<meta property=twitter:title content=SpringMVC工作原理>
<meta property=twitter:creator content=平凡希>
<meta property=twitter:site content=微信公众平台>
<meta property=twitter:description content="一文清清楚楚解释什么是Spring MVC，通俗易懂！">
<title>SpringMVC工作原理</title>
<style media>.rich_media_inner{overflow-wrap:break-word;hyphens:auto}.rich_media_area_primary{padding:calc(20px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) 12px calc(16px + env(safe-area-inset-left))}.rich_media_area_extra{padding:0 calc(16px + env(safe-area-inset-right)) calc(16px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left))}html{line-height:1.6}body{color:#333;background-color:#f2f2f2;letter-spacing:.034em}h2{font-weight:400}*{margin:0;padding:0}a{-webkit-tap-highlight-color:rgba(0,0,0,0)}.rich_media_title{font-size:22px;line-height:1.4;margin-bottom:14px}@supports(-webkit-overflow-scrolling:touch){.rich_media_title{font-weight:700}}.rich_media_meta_list{margin-bottom:22px;line-height:20px;font-size:0;overflow-wrap:break-word;word-break:break-all}.rich_media_meta_list em{font-style:normal}.rich_media_meta{display:inline-block;vertical-align:middle;margin:0 10px 10px 0;font-size:15px;-webkit-tap-highlight-color:rgba(0,0,0,0)}.rich_media_meta_text{color:rgba(0,0,0,0.3)}.rich_media_meta_nickname{position:relative}.rich_media_content{overflow:hidden;color:#333;font-size:17px;overflow-wrap:break-word;hyphens:auto;text-align:justify;z-index:0}.rich_media_content *{max-width:100% !important;box-sizing:border-box !important;overflow-wrap:break-word !important}.rich_media_content p{clear:both;min-height:1em}.rich_media_content .list-paddingleft-2{padding-left:2.2em}@media screen and (min-width:1024px){.rich_media_area_primary_inner,.rich_media_area_extra_inner{max-width:677px;margin-left:auto;margin-right:auto}.rich_media_area_primary{padding-top:32px}}blockquote{padding-left:10px;border-left:3px solid #dbdbdb;color:rgba(0,0,0,0.5);font-size:15px;padding-top:4px;margin:1em 0}.appmsg_skin_default .rich_media_area_primary{background-color:#fff}.appmsg_style_default .rich_media_tool{padding-top:15px}.read-more__area{margin:30px 0}html,body{height:100%}</style>
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/pc492bcc.css">
<![endif]-->
<style id=page/appmsg_new/not_in_mm.css>.weui-flex{display:flex}.weui-flex__item{-webkit-box-flex:1;flex:1 1 0%}html{text-size-adjust:100%}body{line-height:1.6;font-family:-apple-system-font,BlinkMacSystemFont,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","Microsoft YaHei",Arial,sans-serif;font-size:16px}body,h2,p,ul,ol{margin:0}a{color:#576b95;text-decoration:none}body,html{-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}@media(orientation:portrait){@-webkit-keyframes opr_fade_out{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes opr_fade_in{0%{opacity:0}100%{bottom:0;opacity:1}}}@-webkit-keyframes opr_fade_out{0%{opacity:1}100%{opacity:0}}@-webkit-keyframes opr_fade_in{0%{opacity:0}100%{opacity:1}}@-webkit-keyframes opacity-60-25-0-12{0%{opacity:.25}0.01%{opacity:.25}0.02%{opacity:1}60.01%{opacity:.25}100%{opacity:.25}}@-webkit-keyframes opacity-60-25-1-12{0%{opacity:.25}8.34333%{opacity:.25}8.35333%{opacity:1}68.3433%{opacity:.25}100%{opacity:.25}}@-webkit-keyframes opacity-60-25-2-12{0%{opacity:.25}16.6767%{opacity:.25}16.6867%{opacity:1}76.6767%{opacity:.25}100%{opacity:.25}}@-webkit-keyframes opacity-60-25-3-12{0%{opacity:.25}25.01%{opacity:.25}25.02%{opacity:1}85.01%{opacity:.25}100%{opacity:.25}}@-webkit-keyframes opacity-60-25-4-12{0%{opacity:.25}33.3433%{opacity:.25}33.3533%{opacity:1}93.3433%{opacity:.25}100%{opacity:.25}}@-webkit-keyframes opacity-60-25-5-12{0%{opacity:.270958}41.6767%{opacity:.25}41.6867%{opacity:1}1.67667%{opacity:.25}100%{opacity:.270958}}@-webkit-keyframes opacity-60-25-6-12{0%{opacity:.375125}50.01%{opacity:.25}50.02%{opacity:1}10.01%{opacity:.25}100%{opacity:.375125}}@-webkit-keyframes opacity-60-25-7-12{0%{opacity:.479292}58.3433%{opacity:.25}58.3533%{opacity:1}18.3433%{opacity:.25}100%{opacity:.479292}}@-webkit-keyframes opacity-60-25-8-12{0%{opacity:.583458}66.6767%{opacity:.25}66.6867%{opacity:1}26.6767%{opacity:.25}100%{opacity:.583458}}@-webkit-keyframes opacity-60-25-9-12{0%{opacity:.687625}75.01%{opacity:.25}75.02%{opacity:1}35.01%{opacity:.25}100%{opacity:.687625}}@-webkit-keyframes opacity-60-25-10-12{0%{opacity:.791792}83.3433%{opacity:.25}83.3533%{opacity:1}43.3433%{opacity:.25}100%{opacity:.791792}}@-webkit-keyframes opacity-60-25-11-12{0%{opacity:.895958}91.6767%{opacity:.25}91.6867%{opacity:1}51.6767%{opacity:.25}100%{opacity:.895958}}@-webkit-keyframes loading{0%{transform:rotate3d(0,0,1,0)}100%{transform:rotate3d(0,0,1,360deg)}}@keyframes loading{0%{transform:rotate3d(0,0,1,0)}100%{transform:rotate3d(0,0,1,360deg)}}.article_extend_area{padding:30px 0 0}.article_extend_area:empty{display:none}@supports(-webkit-overflow-scrolling:touch){.reward_button{font-weight:700}}.rich_media_extra{position:relative}.top_banner{background-color:#fff}.ct_mpda_wrp{margin:38px 0 20px}.like_btn{-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0;background-color:transparent;border:0;display:inline-block;vertical-align:middle;padding:0;font-size:15px;font-family:inherit;line-height:2.13333;color:#576b95}.like_btn::before{font-size:16px;content:"";display:inline-block;width:1em;height:1.125em;vertical-align:middle;margin-top:-0.25em;margin-right:.05em;background:url("data:image/svg+xml;charset=utf8, %3Csvg width='18' height='20' viewBox='0 0 18 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.485 3.785l2.506-2.477a1.674 1.674 0 0 1 2.352 0l2.505 2.477 3.423.908a1.653 1.653 0 0 1 1.18 2.026l-.917 3.382.918 3.384a1.652 1.652 0 0 1-1.18 2.024l-3.399.902-2.53 2.493a1.674 1.674 0 0 1-2.352 0l-2.506-2.477-3.423-.908a1.653 1.653 0 0 1-1.18-2.026l.917-3.383-.918-3.392a1.652 1.652 0 0 1 1.18-2.025l3.424-.908zm.836 1.447l.006 2.298c0 .59-.317 1.138-.828 1.438l-2.015 1.143 2.005 1.136c.517.29.838.841.838 1.435l-.006 2.298 2.01-1.156a1.667 1.667 0 0 1 1.675-.003l2.007 1.154-.007-2.302c0-.583.319-1.13.829-1.43l2.014-1.142-2.005-1.136a1.647 1.647 0 0 1-.838-1.435l.007-2.298-2.01 1.156a1.65 1.65 0 0 1-1.67.001L6.321 5.232zm-1.094 2.3L5.22 4.994l-2.878.763a.552.552 0 0 0-.398.674l.77 2.851 2.23-1.264a.573.573 0 0 0 .283-.486zm-.278 4.673L2.714 10.94l-.77 2.84a.553.553 0 0 0 .399.676l2.877.763.007-2.537a.548.548 0 0 0-.278-.476zm3.935 2.57l-2.216 1.274 2.096 2.073c.222.22.583.22.806 0l2.103-2.073-2.214-1.274a.57.57 0 0 0-.575 0zm4.222-2.104l.007 2.538 2.879-.763a.552.552 0 0 0 .398-.674l-.771-2.843-2.23 1.265a.57.57 0 0 0-.283.477zm.279-4.664l2.234 1.266.77-2.84a.553.553 0 0 0-.399-.676l-2.877-.763-.007 2.537c0 .196.107.38.279.476zm-4.501-2.57c.176.104.39.104.566 0l2.215-1.274L9.57 2.09a.574.574 0 0 0-.805 0L6.668 4.163l2.216 1.274z' fill='%23576B95' fill-rule='evenodd'/%3E%3C/svg%3E") 0 0 / 1em no-repeat transparent}.like_num{font-size:15px;margin-left:.2em}.like_comment_wrp{font-size:17px;margin-top:9px;margin-bottom:8px;position:relative;z-index:1}.like_comment_wrp::before,.like_comment_wrp::after{content:"";display:inline-block;width:0;height:0;border-width:0 7px 7px;border-style:dashed dashed solid;border-color:transparent transparent rgba(0,0,0,0.03);position:absolute;top:-7px;right:28px}.like_comment_wrp::after{border-bottom-color:#f7f7f7;top:-6px}.like_comment_inner{background-color:rgba(0,0,0,0.03);border-radius:4px;overflow:hidden;padding:24px 16px;display:flex;-webkit-box-align:center;align-items:center;text-align:center}.like_comment_primary_wrp{font-size:16px;margin-top:9px;margin-bottom:4px;background-color:#fff;z-index:21}.like_comment_primary_wrp::before,.like_comment_primary_wrp::after{content:"";display:inline-block;width:0;height:0;border-width:0 7px 7px;border-style:dashed dashed solid;border-color:transparent transparent #fff;position:absolute;top:-7px;right:28px}.like_comment_primary_wrp::after{border-bottom-color:#fff;top:-6px}.like_comment_primary_wrp.editing{position:fixed;top:10px;bottom:0;left:0;right:0;margin:0}.like_comment_primary_wrp.editing::before,.like_comment_primary_wrp.editing::after{display:none}.like_comment_primary_mask{position:fixed;z-index:20;top:0;left:0;bottom:0;right:0;background-color:rgba(0,0,0,0.2)}@-webkit-keyframes weuiLoading{0%{transform:rotate3d(0,0,1,0)}100%{transform:rotate3d(0,0,1,360deg)}}@keyframes weuiLoading{0%{transform:rotate3d(0,0,1,0)}100%{transform:rotate3d(0,0,1,360deg)}}@-webkit-keyframes slidein{0%{transform:translateX(-50%)}100%{transform:translateX(0)}}@keyframes slidein{0%{transform:translateX(-50%)}100%{transform:translateX(0)}}.mpda_bottom_container{position:relative}.rich_media_tool{overflow:hidden;line-height:32px}.rich_media_tool .meta_primary{float:left}.rich_media_tool .meta_extra{float:right}.rich_media_tool .meta_praise{text-align:right}.media_tool_meta i{vertical-align:0;position:relative;top:1px}.meta_praise{-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.meta_praise .praise_num{display:inline-block;vertical-align:top}.meta_praise:hover{cursor:pointer}.icon_praise_gray{background:url("") 0 0 / 100% no-repeat transparent;display:inline-block}.rich_media_tool{font-size:15px}.rich_media_tool .meta_primary{margin-right:16px}.rich_media_tool .meta_extra{margin-left:16px;color:#576b95}.rich_media_tool .meta_praise{min-width:2.5em}.rich_media_tool .meta_praise i{margin-right:5px}.icon_praise_gray{background-image:url("data:image/svg+xml;charset=utf8, %3Csvg width='16' height='16' viewBox='0 0 16 16' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.5 6.988h-.003c-.095-.01-.167-.022-.125-.022H1.75c-.343 0-.75.39-.75.7v6.73c0 .31.27.57.611.57H2.5V7.01a.51.51 0 0 1 0-.022zm1 .003a.55.55 0 0 1 0 .02v7.955h7.414c.748 0 1.395-.361 1.773-1.324a37.17 37.17 0 0 0 1.115-2.57c.219-.564.413-1.11.575-1.627.247-.785.413-1.48.484-2.058.073-.595-.565-1.021-1.236-1.021h-4.97l.102-.586.18-1.027.13-.55a35.058 35.058 0 0 0 .245-1.128c.212-1.098-.483-2.019-1.238-2.067-.74-.048-1.1.111-1.104.562-.008 1.276-.45 2.805-1.252 4.129-.357.589-.899.965-1.56 1.16-.217.065-.438.107-.658.132zm6.345-1.625h3.78c1.19 0 2.393.804 2.229 2.143-.08.646-.26 1.397-.523 2.235-.17.54-.37 1.107-.597 1.69a38.158 38.158 0 0 1-1.133 2.61c-.525 1.346-1.557 1.922-2.687 1.922H1.61c-.886 0-1.611-.698-1.611-1.57v-6.73c0-.871.864-1.7 1.75-1.7l.719.009A3.285 3.285 0 0 0 3.876 5.9c.435-.13.769-.361.986-.72.71-1.171 1.102-2.525 1.108-3.618C5.978.338 6.901-.07 8.14.01c1.36.088 2.48 1.57 2.155 3.255a36.012 36.012 0 0 1-.253 1.167l-.124.52-.072.414z' fill='%23576B95' fill-rule='nonzero'/%3E%3C/svg%3E");font-size:16px;width:1em;height:1em;background-size:1em}.praise_num{color:#576b95}a,button{cursor:pointer}.rich_media_extra{overflow:hidden}.rich_media_extra_discuss{padding-top:0}.praise_num:empty{margin-left:-3px}.comment_primary_emotion_panel_wrp{position:absolute;z-index:1;padding-top:8px;padding-bottom:16px}.comment_primary_emotion_panel{background:#fff;box-shadow:rgba(0,0,0,0.16) 0 2px 8px 0;border-radius:4px;width:376px;height:216px;overflow-y:auto}.tips_global_primary{color:rgba(0,0,0,0.3)}.weui-dialog{position:fixed;z-index:5000;top:50%;left:16px;right:16px;transform:translate(0,-50%);background-color:#fff;text-align:center;border-radius:12px;overflow:hidden;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;max-height:90%}@media screen and (min-width:352px){.weui-dialog{width:320px;margin:0 auto}}.weui-toast{position:fixed;z-index:5000;width:120px;height:120px;top:40%;left:50%;transform:translate(-50%,-50%);background:rgba(17,17,17,0.7);text-align:center;border-radius:5px;color:#fff;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center}.weui-mask{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0;background:rgba(0,0,0,0.6)}.weui-mask_transparent{position:fixed;z-index:1000;top:0;right:0;left:0;bottom:0}@-webkit-keyframes weuiLoading{0%{transform:rotate3d(0,0,1,0)}100%{transform:rotate3d(0,0,1,360deg)}}@keyframes weuiLoading{0%{transform:rotate3d(0,0,1,0)}100%{transform:rotate3d(0,0,1,360deg)}}@media screen and (max-width:1023px){.profile_container{display:none !important}}.weui-desktop-popover{white-space:normal;overflow-wrap:break-word;hyphens:auto;z-index:500;color:#353535;line-height:1.6;background:#fff;border-radius:2px}.weui-desktop-popover::before{content:" ";width:8px;height:8px;background-color:#fff;box-shadow:#d4d4d4 0 2px 10px 0;transform:matrix(0.71,0.71,-0.71,0.71,0,0);position:absolute}.weui-desktop-popover::after{content:" ";background-color:#fff;position:absolute}.weui-desktop-popover_img-text{text-align:center}.weui-desktop-popover_pos-up-center{margin-top:16px}.weui-desktop-popover_pos-up-left::before,.weui-desktop-popover_pos-up-center::before,.weui-desktop-popover_pos-up-right::before{top:-4px}.weui-desktop-popover_pos-up-left::after,.weui-desktop-popover_pos-up-center::after,.weui-desktop-popover_pos-up-right::after{height:10px;top:0;left:0;right:0}.weui-desktop-popover_pos-up-center::before,.weui-desktop-popover_pos-down-center::before{margin-left:-4px}.weui-desktop-popover{position:absolute;padding:14px;box-shadow:none;border:1px solid #d9dadc;width:182px;box-sizing:border-box}.weui-desktop-popover::before{box-shadow:none;border:1px solid #d9dadc}.not_in_mm .rich_media_meta_list{position:relative;z-index:1}.not_in_mm .rich_media_content{position:relative}.not_in_mm .profile_container{width:535px;position:absolute;top:100%;left:0;margin-top:10px;font-size:14px}.not_in_mm .profile_inner{position:relative;padding:30px 22px 36px 144px;background-color:#fff;border:1px solid #d9dadc}.not_in_mm .profile_arrow_wrp{position:absolute;left:22px;top:-8px}.not_in_mm .rich_media_inner{position:relative}.not_in_mm .qr_code_pc_outer{position:fixed;left:0;right:0;top:20px;color:#717375;text-align:center;display:none !important}.not_in_mm .qr_code_pc_inner{position:relative;width:740px;margin-left:auto;margin-right:auto}.not_in_mm .qr_code_pc{position:absolute;right:-140px;top:0;width:140px;padding:16px;border:1px solid #d9dadc;background-color:#fff;overflow-wrap:break-word;word-break:break-all}.not_in_mm .qr_code_pc p{font-size:14px;line-height:20px}.not_in_mm .qr_code_pc_img{width:102px;height:102px}@media screen and (min-width:1024px){.not_in_mm .qr_code_pc_outer{top:32px;display:block !important}}.not_in_mm .qr_code_pc{box-sizing:border-box}</style><link rel="shortcut icon" type=image/x-icon href=""></head>
 <body id=activity-detail class="zh_CN mm_appmsg appmsg_skin_default appmsg_style_default not_in_mm">
 
 
 
<div id=js_article class=rich_media>
 
 <div id=js_top_ad_area class=top_banner></div>
 
 <div class=rich_media_inner>
 
 
 <div id=page-content class=rich_media_area_primary>
 <div class=rich_media_area_primary_inner>
 
 
 
 <div id=img-content>
 
 <h2 class=rich_media_title id=activity-name>
 
 
 
 SpringMVC工作原理
 </h2>
 <div id=meta_content class=rich_media_meta_list>
 <span class="rich_media_meta rich_media_meta_text">
 平凡希
 </span>
 
 <span class="rich_media_meta rich_media_meta_nickname" id=profileBt>
 <a href=https://mp.weixin.qq.com/s/NTVARhzMbTNeIY1faBx7tA id=js_name>
 Java架构师之路 </a>
 <div id=js_profile_qrcode class=profile_container style=display:none>
 <div class=profile_inner>
 
 
 
 
 
 </div>
 <span class=profile_arrow_wrp id=js_profile_arrow_wrp>
 
 
 </span>
 </div>
 </span>
 <em id=publish_time class="rich_media_meta rich_media_meta_text">3月1日</em>
 </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 <div class=rich_media_content id=js_content>
 
 
 
 
 <blockquote><p style=clear:both;color:#333333;font-size:17px;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:.544px;text-align:justify;white-space:normal;line-height:27.2px;widows:1><span style=color:#4f81bd;font-family:宋体,SimSun;font-size:12px;white-space:pre-wrap>作者：</span><span style=color:#4f81bd;font-family:宋体,SimSun;font-size:12px;white-space:pre-wrap>平凡希</span><p style=clear:both;color:#333333;font-size:17px;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:.544px;text-align:justify;white-space:normal;line-height:27.2px;widows:1><span style=color:#4f81bd;font-family:宋体,SimSun;font-size:12px;white-space:pre-wrap>https://www.cnblogs.com/xiaoxi/p/6164383.html</span><p style=clear:both;color:#333333;font-size:17px;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:.544px;text-align:justify;white-space:normal;line-height:27.2px;widows:1><span style=color:#4f81bd;font-family:宋体,SimSun;font-size:12px;white-space:pre-wrap>Java架构师之路做了编排 </span></p></blockquote><p style=clear:both;color:#333333;font-size:17px;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:.544px;text-align:justify;white-space:normal;line-height:27.2px;widows:1><br><section style=white-space:normal;border-width:0;border-style:initial;border-color:initial><section style="margin-bottom:-1px;padding-right:5px;padding-bottom:6px;padding-left:5px;clear:both;border-bottom:2px solid #ef7060;display:inline-block;line-height:1.1"><p style=color:#000000;font-size:15px><span style=font-size:16px;font-family:宋体,SimSun><strong><span style=font-size:16px;font-family:宋体,SimSun;color:#000000>一：SpringMVC的工作原理图</span></strong></span></p></section><p><br></p></section><p style=line-height:2em><img data-copyright=0 data-cropselx1=0 data-cropselx2=556 data-cropsely1=0 data-cropsely2=307 data-ratio=0.5514644351464435 data-src="https://mmbiz.qpic.cn/mmbiz_jpg/M7B64fHXISsMJ9fUorMxIGsNz7L1bMgtzYiaRo4ibycKr7CofqVCB1tjCZGh2Y0g0wuLAKzW0x0db8I7NovaELFw/640?wx_fmt=jpeg" data-type=jpeg data-w=1195 style="width:556px !important;height:auto !important;visibility:visible !important" _width=556px src= crossorigin=anonymous data-fail=0><p><br><section style=white-space:normal;border-width:0;border-style:initial;border-color:initial><section style="margin-bottom:-1px;padding-right:5px;padding-bottom:6px;padding-left:5px;clear:both;border-bottom:2px solid #ef7060;display:inline-block;line-height:1.1"><p style=color:#000000;font-size:15px><span style=font-family:宋体,SimSun><strong><span style=font-family:Verdana,Arial,Helvetica,sans-serif;font-size:16px>二：SpringMVC流程</span></strong></span></p></section><p><br></p></section><ol class=list-paddingleft-2 style=list-style-type:decimal><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>用户发送请求至前端控制器DispatcherServlet。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>DispatcherServlet收到请求调用HandlerMapping处理器映射器。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找)，生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>DispatcherServlet调用HandlerAdapter处理器适配器。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>HandlerAdapter经过适配调用具体的处理器(Controller，也叫后端控制器)。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>Controller执行完成返回ModelAndView。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>DispatcherServlet将ModelAndView传给ViewReslover视图解析器。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>ViewReslover解析后返回具体View。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>DispatcherServlet根据View进行渲染视图（即将模型数据填充至视图中）。</span></p><li><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#000000;font-family:宋体,SimSun;font-size:16px>DispatcherServlet响应用户。</span></p></ol><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal"><br><section style=white-space:normal;border-width:0;border-style:initial;border-color:initial><section style="margin-bottom:-1px;padding-right:5px;padding-bottom:6px;padding-left:5px;clear:both;border-bottom:2px solid #ef7060;display:inline-block;line-height:1.1"><p style=color:#000000;font-size:15px><span style=font-size:16px;font-family:宋体,SimSun><strong>三：组件说明</strong></span></p></section><p><br></p></section><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>以下组件通常使用框架提供实现：</span><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>DispatcherServlet：</span><span style=font-family:宋体,SimSun;font-size:16px>作为前端控制器，整个流程控制的中心，控制其它组件执行，统一调度，降低组件之间的耦合性，提高每个组件的扩展性。</span><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>HandlerMapping：</span><span style=font-family:宋体,SimSun;font-size:16px>通过扩展处理器映射器实现不同的映射方式，例如：配置文件方式，实现接口方式，注解方式等。&nbsp;</span><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>HandlAdapter：</span><span style=font-family:宋体,SimSun;font-size:16px>通过扩展处理器适配器，支持更多类型的处理器。</span><p style="text-align:left;margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>ViewResolver：</span><span style=font-family:宋体,SimSun;font-size:16px>通过扩展视图解析器，支持更多类型的视图解析，例如：jsp、freemarker、pdf、excel等。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><br><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#c0504d;font-family:宋体,SimSun;font-size:16px><strong>组件：</strong></span><p style="margin:10px auto;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px><strong style=color:#000000>1.前端控制器DispatcherServlet（不需要工程师开发）,由框架提供</strong><br><span style=font-size:16px;font-family:宋体,SimSun;color:#000000>作用：接收请求，响应结果，相当于转发器，中央处理器。有了dispatcherServlet减少了其它组件之间的耦合度。</span><br><span style=font-size:16px;font-family:宋体,SimSun;color:#000000>用户请求到达前端控制器，它就相当于mvc模式中的c，dispatcherServlet是整个流程控制的中心，由它调用其它组件处理用户的请求，dispatcherServlet的存在降低了组件之间的耦合性。</span></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px><strong>2.处理器映射器HandlerMapping(不需要工程师开发),由框架提供</strong><br>作用：根据请求的url查找Handler<br>HandlerMapping负责根据用户请求找到Handler即处理器，springmvc提供了不同的映射器实现不同的映射方式，例如：配置文件方式，实现接口方式，注解方式等。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px><strong>3.处理器适配器HandlerAdapter</strong><br>作用：按照特定规则（HandlerAdapter要求的规则）去执行Handler<br>通过HandlerAdapter对处理器进行执行，这是适配器模式的应用，通过扩展适配器可以对更多类型的处理器进行执行。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px><strong>4.处理器Handler<span style=font-size:16px;font-family:宋体,SimSun;color:#000000>(需要工程师开发)</span></strong><br><span style=font-size:16px;font-family:宋体,SimSun;color:#000000>注意：编写Handler时按照HandlerAdapter的要求去做，这样适配器才可以去正确执行Handler</span><br>Handler 是继DispatcherServlet前端控制器的后端控制器，在DispatcherServlet的控制下Handler对具体的用户请求进行处理。<br>由于Handler涉及到具体的用户业务请求，所以一般情况需要工程师根据业务需求开发Handler。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px><strong>5.视图解析器View resolver(不需要工程师开发),由框架提供</strong><br>作用：进行视图解析，根据逻辑视图名解析成真正的视图（view）<br>View Resolver负责将处理结果生成View视图，View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址，再生成View视图对象，最后对View进行渲染将处理结果通过页面展示给用户。 springmvc框架提供了很多的View视图类型，包括：jstlView、freemarkerView、pdfView等。<br>一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户，需要由工程师根据业务需求开发具体的页面。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px><strong>6.视图View(需要工程师开发jsp...)</strong><br>View是一个接口，实现类支持不同的View类型（jsp、freemarker、pdf...）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal"><br><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d><strong>核心架构的具体流程步骤如下：</strong></span><span style=font-family:宋体,SimSun;font-size:16px><br></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>1.首先用户发送请求——>DispatcherServlet，前端控制器收到请求后自己不进行处理，而是委托给其他的解析器进行处理，作为统一访问点，进行全局的流程控制；<br><br></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>2.DispatcherServlet——>HandlerMapping， HandlerMapping 将会把请求映射为HandlerExecutionChain 对象（包含一个Handler 处理器（页面控制器）对象、多个HandlerInterceptor 拦截器）对象，通过这种策略模式，很容易添加新的映射策略；<br><br></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>3.DispatcherServlet——>HandlerAdapter，HandlerAdapter 将会把处理器包装为适配器，从而支持多种类型的处理器，即适配器设计模式的应用，从而很容易支持很多类型的处理器；<br><br></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>4.HandlerAdapter——>处理器功能处理方法的调用，HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处理方法，完成功能处理；并返回一个ModelAndView 对象（包含模型数据、逻辑视图名）；<br><br></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>5.ModelAndView的逻辑视图名——> ViewResolver， ViewResolver 将把逻辑视图名解析为具体的View，通过这种策略模式，很容易更换其他视图技术；<br><br></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>6.View——>渲染，View会根据传进来的Model模型数据进行渲染，此处的Model实际是一个Map数据结构，因此很容易支持其他视图技术；<br><br></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>7返回控制权给DispatcherServlet，由DispatcherServlet返回响应给用户，到此一个流程结束。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><br><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>下边两个组件通常情况下需要开发：</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>Handler：处理器，即后端控制器用controller表示。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>View：视图，即展示给用户的界面，视图中通常需要标签语言展示模型数据。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>&nbsp;</span><section style=white-space:normal;border-width:0;border-style:initial;border-color:initial><section style="margin-bottom:-1px;padding-right:5px;padding-bottom:6px;padding-left:5px;clear:both;border-bottom:2px solid #ef7060;display:inline-block;line-height:1.1"><p style=color:#000000;font-size:15px><span style=font-family:宋体,SimSun><strong><span style=font-family:宋体,SimSun;font-size:16px>四：什么是MVC模式</span></strong></span></p></section><p><br></p></section><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>MVC：MVC是一种设计模式</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>MVC的原理图：</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><img data-copyright=0 data-cropselx1=0 data-cropselx2=804 data-cropsely1=0 data-cropsely2=369 data-ratio=0.458955223880597 data-src="https://mmbiz.qpic.cn/mmbiz_png/M7B64fHXISsMJ9fUorMxIGsNz7L1bMgteZlCBkFjVLKnQ9BvcWTaOUTuU12xxUPNEb6Xibrf61cVKLuhlgkBiaww/640?wx_fmt=png" data-type=png data-w=804 style="border-width:0;border-style:initial;border-color:initial;width:556px !important;height:auto !important;visibility:visible !important" _width=556px src= crossorigin=anonymous data-fail=0><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=color:#c0504d;font-family:宋体,SimSun;font-size:16px><strong>分析：</strong></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>M-Model 模型（完成业务逻辑：有javaBean构成，service+dao+entity）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>V-View 视图（做界面的展示 &nbsp;jsp，html……）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>C-Controller 控制器（接收请求—>调用模型—>根据结果派发页面）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>&nbsp;</span><section style=white-space:normal;border-width:0;border-style:initial;border-color:initial><section style="margin-bottom:-1px;padding-right:5px;padding-bottom:6px;padding-left:5px;clear:both;border-bottom:2px solid #ef7060;display:inline-block;line-height:1.1"><p style=color:#000000;font-size:15px><span style=font-family:宋体,SimSun;font-size:16px><strong>五：Spring MVC是什么</strong></span></p></section><p><br></p></section><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>&nbsp; &nbsp;springMVC是一个MVC的开源框架，springMVC=struts2+spring，springMVC就相当于是Struts2加上sring的整合，但是这里有一个疑惑就是，springMVC和spring是什么样的关系呢？这个在百度百科上有一个很好的解释：意思是说，springMVC是spring的一个后续产品，其实就是spring在原有基础上，又提供了web应用的MVC模块，可以简单的把springMVC理解为是spring的一个模块（类似AOP，IOC这样的模块），网络上经常会说springMVC和spring无缝集成，其实springMVC就是spring的一个子模块，所以根本不需要同spring进行整合。</span><p style=line-height:2em><br><section style=white-space:normal;border-width:0;border-style:initial;border-color:initial><section style="margin-bottom:-1px;padding-right:5px;padding-bottom:6px;padding-left:5px;clear:both;border-bottom:2px solid #ef7060;display:inline-block;line-height:1.1"><p style=color:#000000;font-size:15px><span style=font-family:宋体,SimSun;font-size:16px><strong>六：Spring MVC原理图</strong></span></p></section><p><br></p></section><p style=line-height:2em><img data-copyright=0 data-cropselx1=0 data-cropselx2=556 data-cropsely1=0 data-cropsely2=388 data-ratio=0.6984815618221258 data-src="https://mmbiz.qpic.cn/mmbiz_png/M7B64fHXISsMJ9fUorMxIGsNz7L1bMgtHjPEe5mIzCqpUfTID6obEF9R5r2ZMxiawUsVW9dcMGY74QAGia7J2FfQ/640?wx_fmt=png" data-type=png data-w=922 style="width:556px !important;height:auto !important;visibility:visible !important" _width=556px src= crossorigin=anonymous data-fail=0><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px><strong>看到这个图大家可能会有很多的疑惑，现在我们来看一下这个图的步骤：（可以对比MVC的原理图进行理解）</strong></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第一步<span style=color:#000000;font-family:宋体,SimSun;font-size:16px>：</span>用户发起请求到前端控制器（DispatcherServlet）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第二步<span style=color:#000000;font-family:宋体,SimSun;font-size:16px>：</span>前端控制器请求处理器映射器（HandlerMappering）去查找处理器（Handle）,通过xml配置或者注解进行查找</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第三步<span style=color:#000000;font-family:宋体,SimSun;font-size:16px>：</span>找到以后处理器映射器（HandlerMappering）像前端控制器返回执行链（HandlerExecutionChain）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第四步<span style=color:#000000;font-family:宋体,SimSun;font-size:16px>：</span>前端控制器（DispatcherServlet）调用处理器适配器（HandlerAdapter）去执行处理器（Handler）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第五步：处理器适配器去执行Handler</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第六步：Handler执行完给处理器适配器返回ModelAndView</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第七步：处理器适配器向前端控制器返回ModelAndView</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第八步：前端控制器请求视图解析器（ViewResolver）去进行视图解析</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第九步：视图解析器像前端控制器返回View</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第十步：前端控制器对视图进行渲染</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px>第十一步：前端控制器向用户响应结果</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><br><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px><strong>看到这些步骤我相信大家很感觉非常的乱，这是正常的，但是这里主要是要大家理解springMVC中的几个组件：</strong></span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>前端控制器（DispatcherServlet）</span><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>：</span><span style=font-family:宋体,SimSun;font-size:16px>接收请求，响应结果，相当于电脑的CPU。</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>处理器映射器（HandlerMapping）：</span><span style=font-family:宋体,SimSun;font-size:16px>根据URL去查找处理器</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>处理器（Handler）：</span><span style=font-family:宋体,SimSun;font-size:16px>（需要程序员去写代码处理逻辑的）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>处理器适配器（HandlerAdapter）：</span><span style=font-family:宋体,SimSun;font-size:16px>会把处理器包装成适配器，这样就可以支持多种类型的处理器，类比笔记本的适配器（适配器模式的应用）</span><p style="margin:10px auto;color:#000000;font-size:14px;white-space:normal;line-height:2em"><span style=font-family:宋体,SimSun;font-size:16px;color:#c0504d>视图解析器（ViewResovler）：</span><span style=font-family:宋体,SimSun;font-size:16px>进行视图解析，多返回的字符串，进行处理，可以解析成对应的页面</span><p style="margin:15px 8px;min-height:1em;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:.544px;white-space:normal;widows:1;background-color:#ffffff;color:#3e3e3e;font-family:Helvetica,Arial,sans-serif;font-size:15px;line-height:1.75em;text-align:center;box-sizing:border-box !important;overflow-wrap:break-word !important"><strong style="box-sizing:border-box !important;overflow-wrap:break-word !important"><span style="letter-spacing:1px;color:#407600;box-sizing:border-box !important;overflow-wrap:break-word !important">-END-</span></strong><p style='margin:5px 8px;min-height:1em;font-variant-numeric:normal;font-variant-east-asian:normal;letter-spacing:.544px;white-space:normal;font-size:16px;widows:1;background-color:#ffffff;font-family:-apple-system-font,system-ui,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","Microsoft YaHei",Arial,sans-serif;color:#3e3e3e;word-spacing:2px;box-sizing:border-box !important;overflow-wrap:break-word !important'><span style="color:#ffffff;background-color:#407600;box-sizing:border-box !important;overflow-wrap:break-word !important">&nbsp;</span><span style="color:#ffffff;font-size:15px;background-color:#407600;box-sizing:border-box !important;overflow-wrap:break-word !important">近期热文：</span><ul class=list-paddingleft-2><li><p style="min-height:1em;box-sizing:border-box !important;overflow-wrap:break-word !important"><a href="https://mp.weixin.qq.com/s?__biz=MzI3NjU2ODA5Mg==&amp;mid=2247484310&amp;idx=1&amp;sn=a6ad485c092af98150c85678516c7b60&amp;scene=21#wechat_redirect" target=_blank data-linktype=2 style="color:#576b95;-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box !important;overflow-wrap:break-word !important"><span style="color:#0080ff;-webkit-tap-highlight-color:rgba(0,0,0,0);text-decoration:underline;font-size:14px;box-sizing:border-box !important;overflow-wrap:break-word !important">Spring中获取request的几种方法,及线程安全性</span></a></p></ul><ul class=list-paddingleft-2><li><p style="min-height:1em;box-sizing:border-box !important;overflow-wrap:break-word !important"><a href="https://mp.weixin.qq.com/s?__biz=MzI3NjU2ODA5Mg==&amp;mid=2247484331&amp;idx=2&amp;sn=c045f9fbd02cf4cf3c8c932bfcda453f&amp;scene=21#wechat_redirect" target=_blank data-linktype=2 style="color:#576b95;-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box !important;overflow-wrap:break-word !important"><span style="color:#0080ff;text-decoration:underline;-webkit-tap-highlight-color:rgba(0,0,0,0);font-size:14px;box-sizing:border-box !important;overflow-wrap:break-word !important">Java 11 究竟比 8 快了多少？看看这个基准测试</span></a></p><li><p style="min-height:1em;box-sizing:border-box !important;overflow-wrap:break-word !important"><span style="font-size:14px;color:#0080ff;text-decoration:underline;box-sizing:border-box !important;overflow-wrap:break-word !important"><a href="https://mp.weixin.qq.com/s?__biz=MzI3NjU2ODA5Mg==&amp;mid=2247484355&amp;idx=1&amp;sn=569f8ca15c3f866e5b6af5bd39c6cb2a&amp;scene=21#wechat_redirect" target=_blank data-linktype=2 style="color:#0080ff;-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box !important;overflow-wrap:break-word !important">图解正向代理、反向代理、透明代理</a></span></p><li><p style="min-height:1em;box-sizing:border-box !important;overflow-wrap:break-word !important"><a href="https://mp.weixin.qq.com/s?__biz=MzI3NjU2ODA5Mg==&amp;mid=2247484390&amp;idx=1&amp;sn=8947b06b338666d6fa4238e71728b4fd&amp;scene=21#wechat_redirect" target=_blank data-linktype=2 style="color:#576b95;-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box !important;overflow-wrap:break-word !important"><span style="font-size:14px;text-decoration:underline;color:#0080ff;box-sizing:border-box !important;overflow-wrap:break-word !important">如何优雅的设计Java异常</span></a></p><li><p style="min-height:1em;box-sizing:border-box !important;overflow-wrap:break-word !important"><a href="https://mp.weixin.qq.com/s?__biz=MzI3NjU2ODA5Mg==&amp;mid=2247484400&amp;idx=2&amp;sn=f39581015dd0fa198a27009311af3161&amp;scene=21#wechat_redirect" target=_blank data-linktype=2 style="color:#576b95;-webkit-tap-highlight-color:rgba(0,0,0,0);box-sizing:border-box !important;overflow-wrap:break-word !important"><span style="font-size:14px;text-decoration:underline;color:#0080ff;box-sizing:border-box !important;overflow-wrap:break-word !important">黑客为什么不攻击支付宝?</span></a><br style="box-sizing:border-box !important;overflow-wrap:break-word !important"><p style="min-height:1em;box-sizing:border-box !important;overflow-wrap:break-word !important"><br style="box-sizing:border-box !important;overflow-wrap:break-word !important"></p></ul><p style="min-height:1em;letter-spacing:.544px;white-space:normal;background-color:#ffffff;box-sizing:border-box !important;overflow-wrap:break-word !important"><img data-type=jpeg data-ratio=0.3333333333333333 data-w=1080 data-backw=556 data-backh=185 data-before-oversubscription-url="https://mmbiz.qpic.cn/mmbiz_jpg/M7B64fHXIStj2G1ryBlfibourJLibdiaATePdUl76gZQ2VEHHRIcLrKgYXCTOVc71xYXgS9QvmibTcnm56xDnKoBhQ/640?wx_fmt=jpeg" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/M7B64fHXIStj2G1ryBlfibourJLibdiaATePdUl76gZQ2VEHHRIcLrKgYXCTOVc71xYXgS9QvmibTcnm56xDnKoBhQ/640?wx_fmt=jpeg" style="box-sizing:border-box !important;overflow-wrap:break-word !important;visibility:visible !important;width:677px !important;height:auto !important" _width=677px src="" crossorigin=anonymous data-fail=0></p>
 </div>
 
 
 <div class=ct_mpda_wrp id=js_sponsor_ad_area style=display:none></div>
 
 <div class=read-more__area id=js_more_read_area style=display:none>
 
 </div>
 </div>
 
 
 
 <ul id=js_hotspot_area class=article_extend_area></ul>
 
 
<div class=rich_media_tool id=js_toobar3>
 <div class=weui-flex>
 <div class=weui-flex__item>
 
 <a class="media_tool_meta meta_primary" id=js_view_source href=##>阅读原文</a>
 <div id=js_read_area3 class="media_tool_meta tips_global_primary meta_primary" style=display:none>
 <span id=readTxt>阅读</span>
 <span id=readNum3></span>
 </div>
 </div>
 <span style=display:none class="media_tool_meta meta_extra meta_praise" id=like_old>
 <i class=icon_praise_gray></i><span class=praise_num id=likeNum_old></span>
 </span>
 
 <span style=visibility:hidden class="media_tool_meta meta_extra meta_like" id=like3>
 <button class=like_btn id=js_like_btn> 
 <span id=js_like_wording> 在看</span><span class=like_num id=likeNum3></span>
 </button>
 </span>
 
 </div>
</div>
 
 <div class=like_comment_wrp id=js_like_comment style=display:none>
 <div class=like_comment_inner>
 
 
 </div>
 </div> 
 <div style=display:none id=wow_close_inform>
 <div class=weui-mask></div>
 <div class=weui-dialog>
 
 
 
 </div>
 </div>
<div id=js_like_toast style=display:none>
 <div class=weui-mask_transparent></div>
 <div class=weui-toast>
 
 
 </div>
</div>
<div style=display:none id=js_comment_panel>
 <div class="like_comment_primary_wrp editing" id=js_comment_wrp>
 
 </div> 
 <div class=like_comment_primary_mask id=js_mask_2></div>
</div>
<div id=js_loading style=display:none>
 <div class=weui-mask_transparent></div>
 <div class=weui-toast>
 
 
 </div>
</div>
 </div>
 </div>
 <div class="rich_media_area_primary sougou" id=sg_tj style=display:none></div>
 
 <div class=rich_media_area_extra>
 <div class=rich_media_area_extra_inner>
 
 <div id=js_share_appmsg>
 </div>
 
 
 <div class=mpda_bottom_container id=js_bottom_ad_area style=display:none></div>
 
 <div id=js_iframetest style=display:none></div>
 
 <div class="rich_media_extra rich_media_extra_discuss" id=js_cmt_container style=display:none>
 
 
 <div class=discuss_mod id=js_friend_cmt_area style=display:none>
 
 
 
 </div>
 <div class=discuss_mod id=js_cmt_area style=display:none>
 </div>
 </div>
 </div>
 </div>
 
 <div id=js_pc_qr_code class=qr_code_pc_outer style=display:block;>
 <div class=qr_code_pc_inner>
 <div class=qr_code_pc>
 <img id=js_pc_qr_code_img class=qr_code_pc_img src="">
 <p>微信扫一扫<br>关注该公众号</p>
 </div>
 </div>
 </div>
 </div>
</div>
<div id=js_pc_weapp_code class="weui-desktop-popover weui-desktop-popover_pos-up-center weui-desktop-popover_img-text" style=display:none>
 <div class=weui-desktop-popover__content>
 
 </div>
</div>
<div id=js_minipro_dialog style=display:none>
 <div class=weui-mask></div>
 <div class="weui-dialog weui-dialog_link">
 
 
 
 
 </div>
</div>
<div id=js_link_dialog style=display:none>
 <div class=weui-mask></div>
 <div class="weui-dialog weui-dialog_link">
 
 
 
 
 </div>
</div>
<div class=comment_primary_emotion_panel_wrp id=js_emotion_panel_pc style=display:none>
 <div class=comment_primary_emotion_panel>
 
 </div>
</div>
<div class=weui-dialog__wrp id=js_alert_panel style=display:none>
 <div class=weui-mask></div>
 <div class=weui-dialog>
 
 
 </div>
</div>
<div id=js_weapp_without_auth_dialog style=display:none>
 <div class=weui-mask></div>
 <div class="weui-dialog weui-dialog_link">
 
 
 </div>
</div>
 
 
 
 
 
 
